package com.hanson.service;

import com.hanson.common.service.RedisService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Set;

@Slf4j
@Service
public class SearchSortService {
    @Autowired
    private RedisService redisService;
    private static final String ZSET = "HotSearchZset";

    /**
     * 根据key 进行缓存操作
     *
     * @param key
     */
    public void sort(String key) {
        Long rank2 = redisService.rank(ZSET, key);
        // 如果rank2为null,则缓存里面不存在该值
        if (null == rank2) {
            // 不存在,则添加,默认排序为1
            redisService.zAdd(ZSET, key, 1.0);
            log.info("当前:" + key + ":的搜索次数为" + 1);
        } else {
            // 如果存在,则获取排序值 并且+1
            int score = (int) redisService.score(ZSET, key);
            log.info("当前:" + key + ":的搜索次数为" + (score + 1));
            redisService.zAdd(ZSET, key, score + 1);
        }
    }

    /**
     * 从高到低的排序集中获取从头(start)到尾(end)内的元素。
     *
     * @param start 0 表示第一个
     * @param end   -1 表示最后
     * @return
     */
    public Set<Object> findZset(long start, long end) {
        return redisService.reverseRange(ZSET, start, end);
    }

}
